Load required libraries

library("phyloseq")
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
library("ggplot2")
library("plyr")
library("vegan")
library("grid")
library("directlabels")
library("knitr")
library("clustsig")
library("ellipse")
setwd("./data")
opts_knit$set(root.dir = "./data", fig.keep='high')
#opts_chunk$set(dev = 'pdf', fig.path="figures/spist/")

Import data into R studio

First .shared ‘otu matrix’ from mothur

sharedFile = read.table("micro.final.shared")
sharedFile = t(sharedFile)
rownames(sharedFile) = sharedFile[,1]
colnames(sharedFile) = sharedFile[2,]
sharedFile = sharedFile[,2:234]
sharedFile = sharedFile[4:37368,]
class(sharedFile) <- "numeric"

Import subsampled otu matrix (7779 seqs)

sharedsubFile = read.table('micro.final.clean.0.03.subsample.shared')
sharedsubFile = t(sharedsubFile)
rownames(sharedsubFile) = sharedsubFile[,1]
colnames(sharedsubFile) = sharedsubFile[2,]
sharedsubFile = sharedsubFile[,2:219]
sharedsubFile = sharedsubFile[4:14839,]
class(sharedsubFile) <- "numeric"

Import taxonomy file from mothur

taxFile = read.table('micro.final.0.03.cons.taxonomy', header=T, sep='\t')
rownames(taxFile) = taxFile[,1]
taxFile = taxFile[,2:8]
taxFile = as.matrix(taxFile)

Import metadata - ie. site, type, etc..

metaFile = read.table('pools.metaData2', header=T, sep='\t')
rownames(metaFile) = metaFile[,1]
metaFile = metaFile[,2:8]

Create phyloseq object

OTU = otu_table(sharedFile, taxa_are_rows = TRUE)
OTUsub = otu_table(sharedsubFile, taxa_are_rows = TRUE)
TAX = tax_table(taxFile)
META = sample_data(metaFile)
physeq = phyloseq(OTU, TAX, META)
physeqSub = phyloseq(OTUsub, TAX, META)
physeqSub
## phyloseq-class experiment-level object
## otu_table()   OTU Table:         [ 14836 taxa and 214 samples ]
## sample_data() Sample Data:       [ 214 samples by 7 sample variables ]
## tax_table()   Taxonomy Table:    [ 14836 taxa by 7 taxonomic ranks ]

Get rid of any OTUs not present in any samples and get relative abundance

microSub <- prune_taxa(taxa_sums(physeqSub) > 0, physeqSub)
microSubRel = transform_sample_counts(microSub, function(x) x / sum(x) )
microSubRelFilt = filter_taxa(microSubRel, function(x) mean(x) > 1e-5, TRUE)

Stylophora pistillata from aquaria

Take a look at the bacteria classified to genus and to family. NOTE: have to do this on non-subsampled data as these aqarium samples get removed in this step because of low sequence numbers (~3000)

spistAq = prune_samples(c("SPaq", "SPaq-rep2"), physeq)
spistAqrelAbund = transform_sample_counts(spistAq, function(x) x / sum(x) )
spistAqrelAbundFilt = filter_taxa(spistAqrelAbund, function(x) mean(x) > 1e-2, TRUE)
plot_bar(spistAqrelAbundFilt, fill="Genus")

plot_bar(spistAqrelAbundFilt, fill="Family")

Pretty cool! Still about 1/4 of the bacteria are Endozoicomonas

Ok let’s split the dataset into the S.pistillata samples, excluding replicates and the warmed ningaloo samples

microSubRelFiltSpist <- prune_samples(c("11","49-2","50-2","51-2","52-2","53-2","54-2","57-2","63-2","64-2","65-2","67-2","80-2","75-2","76-2","77-2","101","102","103","105","173","174","175","176","205","206","207","208","209","226","227","228","229","230","231","235","236","237","241","242","243","244","251","253","254","256","257","258","259","260","261","262","MIC-25","MIC-50","MIC-53","MIC-91","MIC-145","MIC-151","MIC-220","MIC-226","MIC-229","MIC-424","MIC-427","MIC-453","RS1","RS2","RS3","RS5","RS6","RS7","RS10","RS12","RS13","RS15","RS16","RS17","RS18","19-rep2","55-2-rep2","56-2-rep2","104-rep2","MIC-85-rep2"), microSubRelFilt)

Relative abundance of otus in all Stylophora pistillata samples

microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
spistBar <- plot_bar(microSubRelFiltSpistFilt, fill="Genus", title='Stylophora pistillata')
spistBar

Some variability between the samples but plenty of Endozoicomonas. I’ll facet out the sites to take a closer look.

microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
spistBar <- plot_bar(microSubRelFiltSpistFilt, fill="Genus", title='Stylophora pistillata')
spistBar + facet_wrap(~site, scales='free')

Quite some variability in the microbial composition across the sites. Can see Endozoicomonas throughout the graph, athough it’s a little difficult to see. I’ll redo the graph with just endozoicomonas OTUs.

microSubRelFiltSpistEndo = subset_taxa(microSubRelFiltSpist, Genus=='Endozoicomonas(100)')
spistBarEndo <- plot_bar(microSubRelFiltSpistEndo, fill="Genus", title='Stylophora pistillata')
spistBarEndo + facet_wrap(~site, scales='free')

# add coloring for different Endozoicomonas OTUs
tax_table(microSubRelFiltSpistEndo) <- cbind(tax_table(microSubRelFiltSpistEndo), Strain=taxa_names(microSubRelFiltSpistEndo))
myranks = c("Genus", "Strain")
mylabels = apply(tax_table(microSubRelFiltSpistEndo)[, myranks], 1, paste, sep="", collapse="_")
tax_table(microSubRelFiltSpistEndo) <- cbind(tax_table(microSubRelFiltSpistEndo), catglab=mylabels)
microSubRelFiltSpistEndoFilt = filter_taxa(microSubRelFiltSpistEndo, function(x) mean(x) > 1e-2, TRUE)
plot_bar(microSubRelFiltSpistEndoFilt, fill="catglab", title='Stylophora pistillata') +
  facet_wrap(~site, scales='free')

microSubRelFiltSpistEndoFilt = filter_taxa(microSubRelFiltSpistEndo, function(x) mean(x) > 1e-4, TRUE)
plot_bar(microSubRelFiltSpistEndoFilt, fill="catglab", title='Stylophora pistillata') +
  facet_wrap(~site, scales='free')

Again quite a bit of variability between and within sites but can see Endozoicomonas at all the sites! Also very cool that many of the sites have their ‘own’ Endozoicomonas. Otu7 is only in Australia, while Otu15 is mostly in Indonesia but also pops up in the Red Sea, which might make sense.. Then the main Otu1 appears to dominate the pacific and Red Sea.

Note the change in y-axis numbers (relative abundance) across the different sites - at the American Samoan sites this number is very small.

The Red Sea has the most samples and is a bit hard to see at this scale - I’ll take a closer look at these reefs.

microSubRelFiltSpistFilt = filter_taxa(microSubRelFiltSpist, function(x) mean(x) > 1e-2, TRUE)
microSubRelFiltSpistFiltRedSea <- subset_samples(microSubRelFiltSpistFilt, site=="RedSea")
spistRedSea <- plot_bar(microSubRelFiltSpistFiltRedSea, aes(x=factor(Sample)), fill="Genus", title='Stylophora pistillata in the Red Sea')
spistRedSea + facet_wrap(~reef, scales="free_x")

We also collected some different Stylophora morphology types from the Red Sea reefs - one fatter fingered, reef-flat variatey and a thinner fingered, deeper variety. I decided to also facet out these morpho-types.

spistRedSea + facet_wrap(~morphology, scales="free_x")

spistRedSea <- plot_bar(microSubRelFiltSpistFiltRedSea, aes(x=factor(Sample)), fill="Order", title='Stylophora pistillata in the Red Sea')
spistRedSea + facet_wrap(~morphology, scales="free_x")

Quite cool! Looks like we definately have microbiome differences in the different Stylophora morphologies. The thicker shallower type seems to be more dominated by Endozoicomonas - this was also the type I used for the metagenome studies.

I guess the microbiome differences could be related to the different morphotype or it could just be related to depth?

Ordination of Stylophora pistillata samples

Which distance measure to use?

dist_methods <- unlist(distance("list"))
dist_methods <- dist_methods[-(1:2)]
dist_methods <- dist_methods[-which(dist_methods == "ANY")]

plist <- vector("list", length(dist_methods))
names(plist) = dist_methods
for (j in dist_methods) {
  iDist <- distance(microSubRelFiltSpistFilt, method = j)
  iMDS <- ordinate(microSubRelFiltSpistFilt, "MDS", distance = iDist)
  p <- NULL
  p <- plot_ordination(microSubRelFiltSpistFilt, iMDS, color="site")
  p <- p + ggtitle(paste("MDS using distance method ", j, sep=""))
  plist[[j]] = p
}

df = ldply(plist, function(x) x$data)
names(df)[1] <- "distance"
p = ggplot(df, aes(Axis.1, Axis.2, color=site))
p = p + geom_point(size = 2, alpha = 0.5)
p = p + facet_wrap(~distance, scales = "free")
p = p + ggtitle("MDS on various distance metrics")
p

Pretty hard to decide on a distance metric I think - most people use Bray Curtis so guess I’ll use that - even though I’m pretty sure Pat Schloss (the mothur guy) doesn’t like this measure.

Use the braycurtis matrix to generate plots using nMDS and PCoA

mothurNMDS <- as.data.frame(read.table("micro.spist.0.03.braycurtis.0.03.lt.nmds.axes", header=T))
mothurPCOA <- as.data.frame(read.table("micro.spist.0.03.braycurtis.0.03.lt.pcoa.axes", header=T))

mothurNMDSspearman <- as.data.frame(read.table("micro.spist.0.03.spearman.corr.axes", header=T))
rownames(mothurNMDS) <- mothurNMDS[,1] 
rownames(mothurPCOA) <- mothurPCOA[,1]
rownames(mothurNMDSspearman) <- mothurNMDSspearman[,1]

mothurNMDSmeta <- merge(mothurNMDS, metaFile, by = "row.names")
rownames(mothurNMDSmeta) <- mothurNMDSmeta[,1]
mothurPCOAmeta <- merge(mothurPCOA, metaFile, by = "row.names")

ggplot(mothurPCOAmeta, title='PCoA of Stylophora pistillata samples') +
  geom_point(aes(x=axis2, y=axis3, color=site)) 

mothurNMDSplot <- ggplot(mothurNMDSmeta, title='nMDS of Stylophora pistillata samples') +
  geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplot

mothurNMDSplot + geom_polygon(aes(x=axis2, y=axis3, fill = site), alpha=0.5) + ggtitle("nMDS of Stylophora pistillata samples")

I think the nMDS looks better - it explains more of the variation and spreads the samples better.

Modify shapes so can display the different reefs within the sites

mothurNMDSmeta.shape.names = unique(mothurNMDSmeta$reef)
mothurNMDSmeta.shape <- 1:(length(mothurNMDSmeta.shape.names))
names(mothurNMDSmeta.shape) <- mothurNMDSmeta.shape.names
mothurNMDSmeta.shape["samples"] <- 23
mothurNMDSplot <- ggplot(mothurNMDSmeta, title='nMDS of Stylophora pistillata with reef symbols') +
  geom_point(aes(x=axis2, y=axis3, color=site, shape = reef)) +
  scale_shape_manual(values = mothurNMDSmeta.shape) +
  theme(legend.key.size=unit(0.3,"cm"))
mothurNMDSplot

Actually I think the grouping is much stronger by site rather than by reef. A few of the Ningaloo reefs group together but the Red Sea reefs seem to be all mixed together.

We can also overlay this plot with the OTUs that most contributed to the sample differences (generated using the indicator command in mothur) or by the spearman correlation

top10indicator = mothurNMDSspearman[c("Otu000004","Otu000007","Otu000019","Otu000045","Otu000095","Otu000384","Otu000502","Otu000035","Otu000032","Otu000015","Otu000142"),]

top10spearman = mothurNMDSspearman[c("Otu000001","Otu000019","Otu000054","Otu000005","Otu000007","Otu000110","Otu000045","Otu000142","Otu000014","Otu000031","Otu000062", "Otu000018"),]

arrowmatrix = top10spearman
arrowdf <- data.frame(labels = rownames(arrowmatrix), arrowmatrix)

# get taxonomic information from the original tax file

arrowdf <- data.frame(labels = taxFile[rownames(arrowmatrix),"Genus"], arrowmatrix)

arrowmap <- aes(xend = axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
  geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow <- mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black",  arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow 

arrowdf <- data.frame(labels = taxFile[rownames(arrowmatrix),"Family"], arrowmatrix)
mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black",  arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)

This result reflects nicely what was in the barplots. Looks like the Ningaloo corals have a different Endozoicomonas OTU than the Red Sea reefs which is highly correlated with the samples. I’ll look deeper into different Endozoicomonas types (oligotypes) across sites later.

Correlations between chemical data and microbes

Import nutrient and FCM data and look at Spearman correlations between this data and the sample ordinations

Hbact <- as.data.frame(read.table("meta.Hbact.spearman.corr.axes", header=T))
NH4 <- as.data.frame(read.table("meta.NH4.spearman.corr.axes", header=T))
NN <- as.data.frame(read.table("meta.NN.spearman.corr.axes", header=T))
NO2 <- as.data.frame(read.table("meta.NO2.spearman.corr.axes", header=T))
PEPeuk <- as.data.frame(read.table("meta.PE+Peuk.spearman.corr.axes", header=T))
Peuk <- as.data.frame(read.table("meta.PEUK.spearman.corr.axes", header=T))
po4 <- as.data.frame(read.table("meta.po4.spearman.corr.axes", header=T))
PRO <- as.data.frame(read.table("meta.PRO.spearman.corr.axes", header=T))
silicate <- as.data.frame(read.table("meta.silicate.spearman.corr.axes", header=T))
SYN <- as.data.frame(read.table("meta.SYN.spearman.corr.axes", header=T))

nutrients <- rbind(NH4, NO2, po4, silicate)
FCM <- rbind(Hbact, PEPeuk, Peuk, PRO, SYN)

arrowmatrix = nutrients
arrowdf <- data.frame(labels = arrowmatrix$Feature, arrowmatrix)

arrowmap <- aes(xend =axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
  geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow = mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black",  arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow 

arrowmatrix = FCM
arrowdf <- data.frame(labels = arrowmatrix$Feature, arrowmatrix)

arrowmap <- aes(xend =axis2, yend = axis3, x = 0, y = 0, alpha=0.5, shape = NULL, color = NULL, label = labels)
labelmap <- aes(x = axis2, y = axis3 + 0.04, shape = NULL, color = NULL, label = labels, size=1.5)
arrowhead = arrow(length = unit(0.02, "npc"))
mothurNMDSplot <- ggplot(mothurNMDSmeta) +
  geom_point(aes(x=axis2, y=axis3, color=site))
mothurNMDSplotArrow = mothurNMDSplot + geom_segment(arrowmap, size = 0.5, data = arrowdf, color = "black",  arrow = arrowhead, show_guide = FALSE) + geom_text(labelmap, size = 3, data = arrowdf)
mothurNMDSplotArrow 

PRO = Prochlorococcus
SYN = Synechococcus
PEUK = Photosynthetic Eukaryotes
PE+PEUK= Photosynthetic Eukaryotes that have a high PE fluorescence and are high in Chl as well
HBact = non-pigmented bacteria

Note in these plots that we don’t have data for Indonesia or micronesia (maybe Amy has some), so the vectors cannot point toward those sites and may be a bit misleading - I could draw this with those sites excluded. Anyhow, the Red Sea sites have higher ammonia, while Ningaloo had more silicate and NO2.

For the FCM results, the Red Sea had more Synechococcus and less Prochlorococcus.

SIMPROF analysis to check which samples fall into ‘groups’ without any a priori assumptions

Need to import the shared file containing just spist OTUs, then calcualte the simprof clusters based on the braycurtis metric.

spistShared = read.table('micro.spist.0.03.shared')
spistShared = t(spistShared)
rownames(spistShared) = spistShared[,1]
colnames(spistShared) = spistShared[2,]
spistShared = spistShared[,2:81]
spistShared = spistShared[4:4813,]
class(spistShared) <- "numeric"

spistSIMPROF <- simprof(spistShared, num.expected=10, num.simulated=9, method.cluster='average', method.distance='braycurtis', method.transform='identity', alpha=0.05, sample.orientation='column', silent=FALSE)

simprof.plot(spistSIMPROF, leafcolors=NA, plot=TRUE, fill=TRUE, leaflab="perpendicular", siglinetype=1)

## 'dendrogram' with 2 branches and 80 members total, at height 98.82644

Ok, pretty cool but bit difficult to tell which groups are falling out. I’ll try and overlay the significant clusters on top of the nMDS.

After calculating the clusters, make a data frame of the results and add to previous nMDS plot. Need to add these groups to the nMDS data.frame - I’ll do a loop for this.

simprofCLUSTERS = data.frame()

for(j in 1:length(spistSIMPROF$significantclusters)){
  if(length(spistSIMPROF$significantclusters[[j]]) > 2){
    simprofCLUSTERS <- rbind(simprofCLUSTERS, cbind(j, spistSIMPROF$significantclusters[[j]]))
  }
}

rownames(simprofCLUSTERS) <- simprofCLUSTERS[,2]
colnames(simprofCLUSTERS) <- c("simprofCLUSTER", "group")
mothurNMDSmetaSIMP <- merge(mothurNMDSmeta, simprofCLUSTERS, by="row.names")

#plot over nMDS

df_ell <- data.frame()
for(g in levels(mothurNMDSmetaSIMP$simprofCLUSTER)){
  df_ell <- rbind(df_ell, cbind(as.data.frame(with(mothurNMDSmetaSIMP[mothurNMDSmetaSIMP$simprofCLUSTER==g,], ellipse(cor(axis2, axis3), scale=c(sd(axis2), sd(axis3)), centre=c(mean(axis2), mean(axis3))))),site=g))
}

nMDSsimprof <- ggplot(data=mothurNMDSmeta, aes(x=axis2, y=axis3, color=site)) +
  geom_point() +
  scale_color_hue(limits=levels(droplevels(mothurNMDSmeta$site)))
nMDSsimprof

nMDS.mean <- aggregate(df_ell, list(df_ell$site), FUN=mean)

#write.table(df_ell, file="simpBrayIdent.txt")
#write.table(nMDS.mean, file="simpBrayIdentMean.txt")

df_ell_saved <- (read.table("simpBrayIdent.txt"))
df_ell_saved$site <- factor(df_ell_saved$site)
nMDS.mean.saved <- read.table("simpBrayIdentMean.txt")

nMDSsimprof +
  geom_path(data=df_ell_saved, aes(x=x, y=y, color=site), size=0.5, linetype=2, show_guide=FALSE) +
  annotate("text", x=nMDS.mean.saved$x, y=nMDS.mean.saved$y, label=nMDS.mean.saved$Group.1)

Looks a bit busy but actually some pretty cool clusters coming out here. I went back to the spreadsheet and photos to check out if there were any patterns to the clusters.

mothurNMDSmetaSIMP[mothurNMDSmetaSIMP$simprofCLUSTER==6,“group.x”]

Clusters
3 - 103 RS12 RS15 RS16 RS17 RS18 Rita’s sites RW and RK
5 - RS1 RS2 RS3 RS5 RS6 RS7 Rita’s sites RA and RJ

7 - 52-2 MIC-85-rep2 RS13 Ningaloo 1, Woleai, RK
10 - 75-2 76-2 77-2 all Ningaloo site 4, normal looking Stylophora
11 - 11 49-2 50-2 51-2 53-2 57-2 63-2 64-2 65-2 Ningaloo sites 1-3, normal looking Stylophora

6 - 101 MIC-151 MIC-229 Am Soa, Woleai, Olimareo
13 - 19-rep2 226 230 259 Al Lith, Inner Fsar, Maggie Is
18 - 229 237 256 MIC-220 MIC-226 Al Lith, Inner Fasr, Olimareo

17 - 251 254 MIC-25 Al Fahal, Yap, normal looking Stylophora
20 - 209 257 258 Yanbu, Inner Fsar, contains some skinny fingered Stylophora
23 - 176 206 231 243 244 Yanbu, Al Lith, Al Fahal, almost entirely skinny fingered Stylophora!
31 - 208 227 260 MIC-453 Yanbu, Al Lith, Innser Fsar, Nakuoro, fatter fingers

Looks like we have two types of separation going on here - site and by Stylophora morphology! Pretty cool.

The Indonesian and Ningaloo samples form nice tight clusters based on site. The Red Sea samples don’t cluster by site, but they seem to form clusters based on morphology. Ie. cluster 23 contains almost entirly skinnyer fingered Stylophora.. neat.

Use SIMPER to see what species contribute to the different SIMPROF groups

spistSharedSIMP = read.table('micro.spist.0.03.shared', header=TRUE)
rownames(spistSharedSIMP) <- spistSharedSIMP[,2]
spistSharedSIMP = spistSharedSIMP[,4:4813]
metaFileSIMP <- subset(metaFile, simprof1 != 'NA')
spistDistSIMP <- merge(spistSharedSIMP, metaFileSIMP, by="row.names")
rownames(spistDistSIMP) <- spistDistSIMP[,1]
OTUsSIMP <- spistDistSIMP[,2:4811]
factorsSIMP <- spistDistSIMP[,4812:4818]

spistSIMP <- simper(OTUsSIMP, factorsSIMP$simprof1)

taxFile[“Otu000066”, “Family”]

Cluster 3_5 Phyllobacterium(100) Vibrio(100) unclassified(100) Endozoicomonas(100) Otu000018 Otu000006 Otu000066 Otu000015
0.3425523 0.4223809 0.4900698 0.5349922

Cluster 11_7 unclassified(100) Pseudomonas(100) Endozoicomonas(100) unclassified(79) Otu000027 Otu000005 Otu000007 Otu000046
0.2156589 0.3991708 0.4846407 0.5075199

Cluster 11_10 Endozoicomonas(100) Pseudomonas(100) Endozoicomonas(100) Endozoicomonas(100) unclassified(79) Otu000001 Otu000005 Otu000007 Otu000044 Otu000027 0.1885475 0.3257681 0.4190131 0.4733229 0.5257603

Cluster 23_31 Endozoicomonas(100) unclassified(79) Otu000001 Otu000012
0.3697467 0.6114984

Cluster 23_20 unclassified(100) Psychrobacter(100) unclassified(100) Erythrobacter(100) Prochlorococcus(92) Endozoicomonas(100) Endozoicomonas(100)
Otu000012 Otu000035 Otu000045 Otu000019 Otu000003 Otu000001 Otu000015 0.2390968 0.3285189 0.3898128 0.4215555 0.4506654 0.4793538 0.5045665

Cluster 23_17 unclassified(100) Endozoicomonas(100) Prochlorococcus(92) unclassified(100) Endozoicomonas(100) unclassified(95) unclassified(100) unclassified(100) Halomonas(100) Otu000012 Otu000001 Otu000003 Otu000025 Otu000015 Otu000014 Otu000031 Otu000045 Otu000021 0.2254655 0.2643262 0.2917820 0.3189994 0.3448192 0.3691433 0.3906022 0.4047181 0.4177589

Cluster 31_20 Endozoicomonas(100) Psychrobacter(100) unclassified(100) Otu000001 Otu000035 Otu000045 0.3751966 0.4618428 0.5321333

Cluster 31_10 Endozoicomonas(100) Endozoicomonas(100) Pseudomonas(100) Otu000001 Otu000007 Otu000005 0.3238094 0.4781600 0.6161271

Cluster 20_17 Otu000035 Otu000045 Otu000019 Otu000025 Otu000453 Otu000014 Otu000020 Otu000010 0.08570892 0.15793183 0.18798164 0.21446025 0.23753211 0.25910031 0.27853831 0.29587745 Otu000001 Otu000004 Otu000197 Otu000015 Otu000170 Otu000104 Otu000146 Otu000100 0.31129002 0.32483084 0.33631978 0.34677495 0.35685421 0.36632260 0.37562653 0.38478949 Otu000293 Otu000092 Otu000818 Otu000849 Otu000054 Otu000042 Otu000320 Otu000488

Cluster 7_5 Phyllobacterium(100) unclassified(100) Otu000018 Otu000027 0.3242466 0.5269505